<?php
namespace app\admin\controller;
use think\Config;
class User extends Authentication
{
    //列表方法
    public function index()
    {   
        //查询数据库
        $res = \think\Db::name('user')->select();
        
        //模板参数变量替换
        $this->assign('users',$res);
        return $this->fetch();
    }
    
    //添加方法
    public function insert()
    {
        //判断表单是否Post传值
        if(request()->isPost()){
          
          $data=[
          
            //新增用户参数
            "user_name"=>input("user_name"),
            "user_password"=>input("user_password"),
            "user_type"=>input("user_type"),
            "limit_times"=>config('LIMIT_TIMES'),
            "current_user"=>input("current_user"),
            "active_status"=>input("active_status"),
            "create_time"=>date("Y-m-d H:i:s",time()),
            "update_time"=>date("Y-m-d H:i:s",time()),
          ];
          
          //按照规则实例化验证器
          $validate = \think\Loader::validate('user');
          
          //验证器验证待插入数据
          if($validate->check($data)){
            
            //插入数据            
            $db = \think\Db::name('user')->insert($data);
            
            //判断插入结果            
            if($db){
              return $this->success("用户添加成功! ");
            }else{
              return $this->error("用户添加失败! ");
            }    
          }else{
            return $this->error($validate->getError());
          }
        }
        //如果是添加页面普通加载
        return $this->fetch('insert');
    }
    
    //==============
    //删除方法(单个)
    //==============
    public function delete()
    {
        //判断表单是否Get传值
        if(request()->isGet()){

          $id = input('id');
          if("1"==$id){
            return $this->error("禁止删除系统管理员");
          }
          // 通过助手函数根据主键删除
          if(db('user')->delete($id)){
            return $this->success("用户删除成功! ");
          }else{
             return $this->error("用户删除失败! ");
          }
        }
    }
    //==============
    //删除方法(批量)
    //==============
    public function batch_delete()
    {
        //判断表单是否Post传值
        if(request()->isPost()){
          $id =\think\Request::instance()->param('id'); 
          
          //判断参数是否为空
          if(empty($id)){
            return $this->error("未选择内容");
          }
          
          //非空处理
          $id = join(",",$id);
          
          // 通过助手函数根据主键删除
          if(db('User')->delete($id)){
            return $this->success("用户批量删除成功! ");
          }else{
             return $this->error("用户批量删除失败! ");
          }
        }
    }
    //编辑方法
    public function edit()
    {
        //判断表单是否Get传值
        if(request()->isPost()){
          $id = input('user_id');
          
          //获取用户表单更新数据
          $data = [
            "user_name"=>input("user_name"),
            "user_type"=>input("user_type"),
            "current_user"=>input("current_user"),
            "active_status"=>input("active_status"),
            'update_time'=>date("Y-m-d H:i:s",time()),
          ];
          
          //获取用户初始密码信息
          $user_info = \think\Db::name('user')->find($id);
          $original_password = $user_info["user_password"];
          
          //用户密码修改
          if($original_password!=input("user_password")){
            
            //新密码加密
            $data["user_password"] = md5(input("user_password"));
          }
          
          //按照规则实例化验证器
          $validate = \think\Loader::validate('user');
          
          //验证器以编辑场景验证待更新数据
          if($validate->scene('edit')->check($data)){
            
            // 更新数据表中的数据,如果设置了数据表前缀参数的话，
            // 可以直接使用Db::name('user')
            $res = \think\Db::name('user')
                    ->where('user_id', $id)
                    ->update($data);
            
            // 判断更新结果        
            if($res){
              return $this->success("用户更新成功! ","../../index");
            }else{
               return $this->error("用户更新失败! ");
            }
          }else{
            return $this->error($validate->getError());
          }
        }    
        //判断表单是否Get传值
        if(request()->isGet()){
          
          //获取用户ID
          $id = input('user_id');
          
          //助手函数查询用户记录
          $record = db('user')->where('user_id',$id)->find();
          $this->assign('record',$record);
          
          //更新页面加载
          return $this->fetch('edit');          
        }
    }
}